﻿Imports Persistencia
Public Class ctrTipoEndereco
    Inherits ControlePadrao.ctrPadrao

#Region "Variáveis"
    Private objTipoEndereco As New perTipoEndereco

    Public Mensagens As String() = {"Tipo de endereço já cadastrado.",
                                 "Descrição do tipo de endereço obrigatória."}

    Public sCamposDemonstracao As String() = {"Identificador", "Tipo de Endereço"}
    Public sCamposTabela As String() = {"codTipoEndereco", "DescTipoEndereco"}
    Public sCamposChave As String() = {"codTipoEndereco", "DescTipoEndereco"}
    Public sTitulosColunas As String() = {"Identificador", "Tipo de Endereço"}

#End Region

#Region "Propriedades"

    Public Property CodTipoEndereco As Int32

    ReadOnly Property selecionarTiposEndereco() As DataTable
        Get
            Return Me.objTIpoEndereco.selecionarTiposEndereco
        End Get
    End Property

#End Region

#Region "Enumerações"

    Public Enum eMensagens
        JA_CADASTRADO = 0
        DESCRICAO_OBRIGATORIA = 1
    End Enum

#End Region

#Region "Métodos"

    Public Function gravarTipoEndereco(ByVal iCodTipoEndereco As Int32,
                                        ByVal sDescricao As String,
                                        ByVal bEspComplemento As Boolean) As Boolean
        Dim bRetorno As Boolean = False

        Try

            Me.limparMensagensValidacao()

            If Me.validarTipoEndereco(eTipoValidacao.GRAVACAO,
                                      iCodTipoEndereco,
                                      sDescricao.Trim) Then

                If iCodTipoEndereco = 0 Then
                    iCodTipoEndereco = Me.objTipoEndereco.inserirTIpoEndereco(sDescricao.Trim, bEspComplemento)
                Else
                    Me.objTipoEndereco.editarTipoEndereco(iCodTipoEndereco, sDescricao.Trim, bEspComplemento)
                End If

                Me.CodTipoEndereco = iCodTipoEndereco

                bRetorno = True

            End If

        Catch ex As Exception

            Throw New Exception("Ocorreu um erro no método gravarTipoEndereco." & _
                                Environment.NewLine & ex.Message)

        End Try

        Return bRetorno

    End Function

    Private Function validarTipoEndereco(ByVal iTipoValidacao As ctrTipoEndereco.eTipoValidacao,
                                         ByVal iCodTipoEndereco As Int32,
                                         ByVal sDescricao As String) As Boolean
        Dim bRetorno As Boolean = True

        Try

            Select Case iTipoValidacao

                Case eTipoValidacao.GRAVACAO
                    If sDescricao = String.Empty Then
                        MyBase.adicionarMensagensValidacao(eMensagens.DESCRICAO_OBRIGATORIA,
                                                           ctrTipoEndereco.eTipoLog.ERRO,
                                                           Me.Mensagens(eMensagens.DESCRICAO_OBRIGATORIA))

                        bRetorno = False
                    Else
                        If Not Me.objTIpoEndereco.verificarTipoEnderecoCadastrado(iCodTipoEndereco, sDescricao) Then
                            MyBase.adicionarMensagensValidacao(eMensagens.JA_CADASTRADO,
                                                               ctrTipoEndereco.eTipoLog.ERRO,
                                                               Me.Mensagens(eMensagens.JA_CADASTRADO))

                            bRetorno = False
                        End If
                    End If

                Case eTipoValidacao.EXCLUSAO

                    bRetorno = objTIpoEndereco.validarExclusaoTipoEndereco(iCodTipoEndereco)

            End Select

        Catch ex As Exception

            Throw New Exception("Ocorreu um erro no método validarTipoEndereco." & _
                                Environment.NewLine & ex.Message)

        End Try

        Return bRetorno

    End Function

    Public Function selecionarDadosTipoEndereco(ByVal iCodTipoEndereco As Int32) As DataRow

        Try

            Return Me.objTIpoEndereco.selecionarDadosTiposEndereco(iCodTipoEndereco)

        Catch ex As Exception

            Throw New Exception("Ocorreu um erro no método selecionarDadosTipoEndereco." & _
                                Environment.NewLine & ex.Message)

        End Try

    End Function

    Public Function excluirTipoEndereco(ByVal iCodTipoEndereco As Int32) As Boolean
        Dim bRetorno As Boolean = False

        Try

            If Me.validarTipoEndereco(eTipoValidacao.EXCLUSAO, iCodTipoEndereco, "") Then
                Me.objTIpoEndereco.excluirTipoEndereco(iCodTipoEndereco)
                bRetorno = True
            End If

        Catch ex As Exception
            Throw New Exception("Ocorreu um erro no método excluirTipoEndereco." & _
                                Environment.NewLine & ex.Message)

        End Try

        Return bRetorno

    End Function

    Public Function retornaReferenciaObrigatoria(ByVal iCodTipoEndereco As Int32) As Boolean

        Try

            Return Me.objTipoEndereco.retornaReferenciaObrigatoria(iCodTipoEndereco)

        Catch ex As Exception

            Throw New Exception("Ocorreu um erro no método retornaReferenciaObrigatoria." & _
                                Environment.NewLine & ex.Message)

        End Try

    End Function


#End Region

End Class
